Skip to content

Add comparative benchmarks with numpy#2915

Draft
Alex-PLACET wants to merge 7 commits into
xtensor-stack:masterfrom
Alex-PLACET:add_comparative_benchmarks_with_numpy
Draft

Add comparative benchmarks with numpy#2915
Alex-PLACET wants to merge 7 commits into
xtensor-stack:masterfrom
Alex-PLACET:add_comparative_benchmarks_with_numpy

Conversation

@Alex-PLACET
Copy link
Copy Markdown
Contributor

@Alex-PLACET Alex-PLACET commented May 13, 2026

Checklist

  • The title and commit message(s) are descriptive.
  • Small commits made to fix your PR have been squashed to avoid history pollution.
  • Tests have been added for new features or bug fixes.
  • API of new functions and classes are documented.

Description

xtensor vs NumPy Benchmark Report

Metric: cpu_time
Executable: /home/alexisp/Dev/quantstack/xtensor/build/benchmark/benchmark_xtensor
Host: Quantstacklaptopalexis
CPU scaling enabled: True
ASLR enabled: True

Per-function summary

Function Samples NumPy / xtensor geomean Best Worst Verdict
acos 2 1.14x 1.01x 1.29x xtensor faster
acosh 2 1.98x 1.84x 2.14x xtensor faster
add 2 1.50x 1.10x 2.04x xtensor faster
amax_all 2 0.56x 0.22x 1.39x numpy faster
amax_axis0 2 0.47x 0.11x 1.97x numpy faster
amax_axis1 2 1.08x 0.35x 3.37x xtensor faster
amin_all 2 0.55x 0.22x 1.38x numpy faster
amin_axis0 2 0.46x 0.11x 1.95x numpy faster
amin_axis1 2 1.09x 0.35x 3.38x xtensor faster
asin 2 1.99x 1.86x 2.14x xtensor faster
asinh 2 1.37x 1.15x 1.65x xtensor faster
atan 2 1.44x 1.39x 1.49x xtensor faster
atanh 2 2.36x 2.35x 2.38x xtensor faster
cbrt 2 1.43x 1.16x 1.78x xtensor faster
ceil 2 1.29x 1.03x 1.61x xtensor faster
cos 2 2.85x 2.82x 2.87x xtensor faster
cosh 2 0.70x 0.55x 0.90x numpy faster
divide 2 1.11x 1.07x 1.15x xtensor faster
exp 2 0.93x 0.92x 0.95x numpy faster
exp2 2 0.88x 0.83x 0.94x numpy faster
expm1 2 1.32x 0.77x 2.26x xtensor faster
floor 2 1.29x 1.03x 1.62x xtensor faster
hypot 2 3.85x 3.70x 4.02x xtensor faster
log 2 1.69x 1.37x 2.08x xtensor faster
log10 2 2.15x 2.03x 2.26x xtensor faster
log1p 2 2.12x 2.07x 2.18x xtensor faster
log2 2 1.70x 1.39x 2.08x xtensor faster
mean_all 2 1.13x 0.45x 2.80x xtensor faster
mean_axis0 2 0.58x 0.10x 3.49x numpy faster
mean_axis1 2 1.34x 0.49x 3.67x xtensor faster
multiply 2 1.49x 1.14x 1.95x xtensor faster
power 2 1.20x 1.18x 1.21x xtensor faster
prod_all 2 2.06x 1.24x 3.41x xtensor faster
prod_axis0 2 0.39x 0.09x 1.76x numpy faster
prod_axis1 2 2.17x 1.26x 3.74x xtensor faster
round 2 1.01x 0.96x 1.07x similar
sin 2 2.93x 2.78x 3.09x xtensor faster
sinh 2 4.95x 2.60x 9.43x xtensor faster
sqrt 2 1.47x 1.02x 2.12x xtensor faster
subtract 2 1.46x 1.10x 1.92x xtensor faster
sum_all 2 1.05x 0.45x 2.42x similar
sum_axis0 2 0.53x 0.11x 2.59x numpy faster
sum_axis1 2 1.16x 0.50x 2.70x xtensor faster
tan 2 3.76x 3.03x 4.68x xtensor faster
tanh 2 2.10x 2.04x 2.16x xtensor faster
trunc 2 1.27x 1.01x 1.61x xtensor faster

Detailed results

Function Size xtensor NumPy NumPy / xtensor Verdict
acos 64 11736 ns 15193 ns 1.29x xtensor faster
acos 512 1229374 ns 1237327 ns 1.01x similar
acosh 64 15689 ns 33562 ns 2.14x xtensor faster
acosh 512 1199834 ns 2203597 ns 1.84x xtensor faster
add 64 955 ns 1945 ns 2.04x xtensor faster
add 512 153794 ns 169934 ns 1.10x xtensor faster
amax_all 64 1817 ns 2531 ns 1.39x xtensor faster
amax_all 512 236977 ns 52722 ns 0.22x numpy faster
amax_axis0 64 1849 ns 3644 ns 1.97x xtensor faster
amax_axis0 512 617663 ns 68255 ns 0.11x numpy faster
amax_axis1 64 1828 ns 6169 ns 3.37x xtensor faster
amax_axis1 512 237983 ns 82628 ns 0.35x numpy faster
amin_all 64 1834 ns 2539 ns 1.38x xtensor faster
amin_all 512 238350 ns 52852 ns 0.22x numpy faster
amin_axis0 64 1834 ns 3578 ns 1.95x xtensor faster
amin_axis0 512 640032 ns 69011 ns 0.11x numpy faster
amin_axis1 64 1828 ns 6176 ns 3.38x xtensor faster
amin_axis1 512 237288 ns 83483 ns 0.35x numpy faster
asin 64 7039 ns 15066 ns 2.14x xtensor faster
asin 512 501518 ns 931285 ns 1.86x xtensor faster
asinh 64 20240 ns 33346 ns 1.65x xtensor faster
asinh 512 1859154 ns 2129994 ns 1.15x xtensor faster
atan 64 10916 ns 16299 ns 1.49x xtensor faster
atan 512 650837 ns 907467 ns 1.39x xtensor faster
atanh 64 17741 ns 42180 ns 2.38x xtensor faster
atanh 512 1111676 ns 2615130 ns 2.35x xtensor faster
cbrt 64 30489 ns 54123 ns 1.78x xtensor faster
cbrt 512 1963793 ns 2271448 ns 1.16x xtensor faster
ceil 64 661 ns 1065 ns 1.61x xtensor faster
ceil 512 105453 ns 108167 ns 1.03x similar
cos 64 6448 ns 18534 ns 2.87x xtensor faster
cos 512 382425 ns 1079464 ns 2.82x xtensor faster
cosh 64 15696 ns 14173 ns 0.90x numpy faster
cosh 512 1593010 ns 871540 ns 0.55x numpy faster
divide 64 2176 ns 2503 ns 1.15x xtensor faster
divide 512 154884 ns 165645 ns 1.07x xtensor faster
exp 64 9806 ns 9310 ns 0.95x numpy faster
exp 512 628211 ns 577400 ns 0.92x numpy faster
exp2 64 9945 ns 9299 ns 0.94x numpy faster
exp2 512 720145 ns 594419 ns 0.83x numpy faster
expm1 64 14401 ns 32504 ns 2.26x xtensor faster
expm1 512 1129295 ns 873062 ns 0.77x numpy faster
floor 64 661 ns 1068 ns 1.62x xtensor faster
floor 512 104207 ns 107347 ns 1.03x similar
hypot 64 3261 ns 13110 ns 4.02x xtensor faster
hypot 512 209323 ns 773540 ns 3.70x xtensor faster
log 64 8547 ns 17819 ns 2.08x xtensor faster
log 512 552289 ns 753956 ns 1.37x xtensor faster
log10 64 9918 ns 22437 ns 2.26x xtensor faster
log10 512 651181 ns 1324825 ns 2.03x xtensor faster
log1p 64 9587 ns 20868 ns 2.18x xtensor faster
log1p 512 607629 ns 1260547 ns 2.07x xtensor faster
log2 64 9192 ns 19113 ns 2.08x xtensor faster
log2 512 595742 ns 826105 ns 1.39x xtensor faster
mean_all 64 1134 ns 3178 ns 2.80x xtensor faster
mean_all 512 123322 ns 55821 ns 0.45x numpy faster
mean_axis0 64 1300 ns 4531 ns 3.49x xtensor faster
mean_axis0 512 612688 ns 58849 ns 0.10x numpy faster
mean_axis1 64 1188 ns 4356 ns 3.67x xtensor faster
mean_axis1 512 122792 ns 60268 ns 0.49x numpy faster
multiply 64 964 ns 1883 ns 1.95x xtensor faster
multiply 512 150913 ns 171559 ns 1.14x xtensor faster
power 64 27760 ns 33686 ns 1.21x xtensor faster
power 512 1814290 ns 2146596 ns 1.18x xtensor faster
prod_all 64 1770 ns 6041 ns 3.41x xtensor faster
prod_all 512 227693 ns 282008 ns 1.24x xtensor faster
prod_axis0 64 1834 ns 3231 ns 1.76x xtensor faster
prod_axis0 512 632740 ns 54496 ns 0.09x numpy faster
prod_axis1 64 1789 ns 6687 ns 3.74x xtensor faster
prod_axis1 512 228785 ns 287819 ns 1.26x xtensor faster
round 64 1613 ns 1731 ns 1.07x xtensor faster
round 512 112281 ns 107590 ns 0.96x similar
sin 64 6720 ns 18711 ns 2.78x xtensor faster
sin 512 385969 ns 1192133 ns 3.09x xtensor faster
sinh 64 13669 ns 35475 ns 2.60x xtensor faster
sinh 512 165511 ns 1560352 ns 9.43x xtensor faster
sqrt 64 3246 ns 6885 ns 2.12x xtensor faster
sqrt 512 209269 ns 212644 ns 1.02x similar
subtract 64 999 ns 1923 ns 1.92x xtensor faster
subtract 512 154002 ns 170123 ns 1.10x xtensor faster
sum_all 64 1232 ns 2978 ns 2.42x xtensor faster
sum_all 512 127564 ns 58006 ns 0.45x numpy faster
sum_axis0 64 1224 ns 3168 ns 2.59x xtensor faster
sum_axis0 512 630034 ns 68078 ns 0.11x numpy faster
sum_axis1 64 1215 ns 3279 ns 2.70x xtensor faster
sum_axis1 512 125159 ns 62334 ns 0.50x numpy faster
tan 64 5578 ns 26097 ns 4.68x xtensor faster
tan 512 436254 ns 1321647 ns 3.03x xtensor faster
tanh 64 16555 ns 33742 ns 2.04x xtensor faster
tanh 512 992713 ns 2146525 ns 2.16x xtensor faster
trunc 64 660 ns 1062 ns 1.61x xtensor faster
trunc 512 101855 ns 102982 ns 1.01x similar

@Alex-PLACET Alex-PLACET self-assigned this May 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant